


			FIRE
		       ------

	Un electrician foloseste n (2<=n<=500) fire pentru cablarea casei din pod pana in beci. Ca-
petele firelor sunt numerotate de la 1 la n atat in pod cat si in beci. Deoarece electricianul este
o persoana extrem de imprastiata, un fir avand capatul numerotat cu i in pod, nu are intotdeauna
capatul din beci numerotat cu i.
	Electricianul poate urca in pod sau poate cobori in beci, initial el aflandu-se in pod.
Sarcina voastra este de a-l ajuta pe electrician sa gaseasca corespondenta capetelor din pod cu
cele din beci, executand un numar minim de urcari si coborari. In scopul gasirii capetelor cores-
punzatoare, electricianul (aflat in pod sau in beci) fie conecteaza doua fire (daca firul x este
conectat cu firul y, iar firul y este conectat cu firul z, atunci firul x este conectat automat cu
firul z), fie verifica daca 2 fire sunt conectate la captul opus.

	Aveti la dispozitie un unit (FIRE.PAS) care va contine urmatoarele functii:

Procedure Start
- procedura de initializare; orice alta functie sau procedura va fi apelata numai dupa apelul pro-
cedurii Start

Function Number:integer;
- functia care returneaza numarul de fire

Procedure Connect(x,y:integer);
- procedura care permite conectarea firului x cu firul y;

Function IsConnect(x,y:integer):Boolean;
- verifica daca firele x si y sunt conectate la captul opus

Procedure Clear;
- permite decuplarea tuturor legaturilor existente in locul in care se afla electricianul (pod sau
beci)

Procedure GoUp
- procedura care produce mutarea electricianului din beci in pod;

Procedure GoDown
- produce mutarea electricianului din pod in beci

Procedure Solution(x,y:integer);
- procedura prin care specificati ca firul x aflat in pod corespunde firului y din beci;
aceasta procedura trebuie apelata pentru toate firele;

Procedure Stop
- marcheaza sfarsitul rezolvarii; programul vostru nu va fi punctat decat dupa apelarea acestei
proceduri.